home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 September / PCWorld_2004-09_cd.bin / software / topware / winamp / winamp504_full.exe / $R0 / Winamp Modern / beatvisualization.m < prev    next >
Text File  |  2004-07-01  |  4KB  |  140 lines

  1. #include <lib/std.mi>
  2. #include "attribs.m"
  3.  
  4. Function setObjects();
  5.  
  6. Global Group frameGroup,beatdisplay;
  7. Global Layer beatOverlay,DisplayRight,DisplayRightOverlay,DisplaySongtickerBG,VisOverlay;
  8. Global Timer refreshEQ;
  9. Global AnimatedLayer beatbarLeft,beatbarRight;
  10. Global int lastBeatLeft,lastBeatRight;
  11. Global Button Toggler,Toggler2;
  12. Global Int dobeat2;
  13.  
  14. System.onScriptLoaded() {
  15.     initAttribs();
  16.   frameGroup = getScriptGroup();
  17.   beatdisplay = frameGroup.findObject("player.normal.display.beatvisualization");
  18.   beatOverlay = frameGroup.findObject("beatdisplayoverlay");
  19.   beatbarLeft = frameGroup.findObject("beatleft");
  20.   beatbarRight = frameGroup.findObject("beatright");
  21.  
  22.   Toggler = frameGroup.findObject("beatvisualization");
  23.   Toggler2 = frameGroup.findObject("beatvisualization2");
  24.  
  25.   DisplayRight = frameGroup.findObject("display.right");
  26.   DisplayRightOverlay = frameGroup.findObject("display.right.overlay2");
  27.   DisplaySongtickerBG = frameGroup.findObject("display.st.right");
  28.   VisOverlay = frameGroup.findObject("visualization.overlay");
  29.  
  30.   lastBeatLeft = 0;
  31.   lastBeatRight = 0;
  32.  
  33.   refreshEQ = new Timer;
  34.   refreshEQ.setDelay(10);
  35. }
  36.  
  37. System.onscriptunloading() {
  38.   delete refreshEQ;
  39. }
  40.  
  41. setObjects() {
  42.   int group_width = frameGroup.getWidth();
  43.  
  44.   if ( group_width % 2 !=0 ) {
  45.         DisplayRight.setXmlParam("image","player.display.right");
  46.       DisplayRightOverlay.setXmlParam("image","player.display.right");
  47.       DisplaySongtickerBG.setXmlParam("image","player.display.songticker.bg.right");
  48.       VisOverlay.setXmlParam("image","player.visualization.overlay");
  49.     } else {
  50.         DisplayRight.setXmlParam("image","player.display.right2");
  51.       DisplayRightOverlay.setXmlParam("image","player.display.right2");
  52.       DisplaySongtickerBG.setXmlParam("image","player.display.songticker.bg.right2");
  53.       VisOverlay.setXmlParam("image","player.visualization.overlay2");
  54.     }
  55.  
  56.   if ( group_width > 480 ) {
  57.     int newXpos = (group_width-60)/2;
  58.     beatdisplay.setXmlParam("x", IntegerToString(newXpos));
  59.     beatdisplay.show();
  60.  
  61.     if ( beatvisualization_attrib.getData()=="1" ) {
  62.       refreshEQ.stop();
  63.       refreshEQ.start();
  64.     } else {
  65.       refreshEQ.stop();
  66.       beatbarLeft.gotoframe(0);
  67.       beatbarRight.gotoframe(0);
  68.     }
  69.   } else {
  70.     beatdisplay.hide();
  71.     refreshEQ.stop();
  72.   }
  73. }
  74.  
  75. frameGroup.onResize(int x, int y, int w, int h) {
  76.   setObjects();
  77. }
  78.  
  79. refreshEQ.onTimer() {
  80.   int beatLeft= System.getLeftVuMeter();
  81.   int beatRight= System.getRightVuMeter();
  82.  
  83.   int frameLeft=beatLeft/16;
  84.   int frameRight=beatRight/16;
  85.  
  86.   if (frameLeft>14) frameLeft=14;
  87.   if (frameRight>14) frameRight=14;
  88.  
  89.   if (frameLeft<lastBeatLeft) {
  90.     frameLeft=lastBeatLeft-1;
  91.     if (frameLeft<0) frameLeft=0;
  92.   }
  93.  
  94.   if (frameRight<lastBeatRight) {
  95.     frameRight=lastBeatRight-1;
  96.     if (frameRight<0) frameRight=0;
  97.   }
  98.  
  99.   lastBeatLeft=frameLeft;
  100.   lastBeatRight=frameRight;
  101.  
  102.   beatbarLeft.gotoframe(frameLeft);
  103.   beatbarRight.gotoframe(frameRight);
  104. }
  105.  
  106. beatvisualization_attrib.onDataChanged() {
  107.   setObjects();
  108. }
  109.  
  110. System.onKeyDown(String key) {
  111.   if (key == "shift+ctrl+alt") {
  112.     dobeat2 = 1;
  113.     complete;
  114.   } else dobeat2 = 0;
  115. }
  116.  
  117. Toggler.onLeftClick() {
  118.     if ( beatvisualization_attrib.getData()=="1" ) {
  119.         beatvisualization_attrib.setData("0");
  120.     } else {
  121.         beatvisualization_attrib.setData("1");
  122.     }
  123. }
  124.  
  125. Toggler2.onActivate(boolean on) {
  126.     if (!dobeat2) { Toggler.leftClick(); return; }
  127.     refreshEQ.stop();
  128.  
  129.     if (on) {
  130.         beatbarLeft.setXMLParam("image","player.display.beat.left2");
  131.         beatbarRight.setXMLParam("image","player.display.beat.right2");
  132.         beatOverlay.hide();
  133.     } else {
  134.         beatbarLeft.setXMLParam("image","player.display.beat.left");
  135.         beatbarRight.setXMLParam("image","player.display.beat.right");
  136.         beatOverlay.show();
  137.     }
  138.     setObjects();
  139. }
  140.